package com.shop.cereshop.admin.service.report;

import com.shop.cereshop.admin.page.report.ReportDetailVO;
import com.shop.cereshop.admin.page.report.ReportRecordPageVO;
import com.shop.cereshop.admin.param.report.ReportAuditParam;
import com.shop.cereshop.admin.param.report.ReportHandleParam;
import com.shop.cereshop.admin.param.report.ReportPageParam;
import com.shop.cereshop.commons.domain.common.Page;
import com.shop.cereshop.commons.domain.user.CerePlatformUser;
import com.shop.cereshop.commons.exception.CoBusinessException;

import javax.servlet.http.HttpServletRequest;

/**
 * 举报记录服务接口
 *
 * @author
 */
public interface CereReportRecordService {

    /**
     * 分页查询举报记录
     *
     * @param param 查询参数
     * @return 举报记录分页数据
     * @throws CoBusinessException 业务异常
     */
    Page<ReportRecordPageVO> getReportPage(ReportPageParam param) throws CoBusinessException;

    /**
     * 获取举报详情
     *
     * @param reportId 举报ID
     * @return 举报详情
     * @throws CoBusinessException 业务异常
     */
    ReportDetailVO getReportDetail(Long reportId) throws CoBusinessException;

    /**
     * 审核举报
     *
     * @param param 审核参数
     * @param user  当前用户
     * @return 是否成功
     * @throws CoBusinessException 业务异常
     */
    Boolean auditReport(ReportAuditParam param, CerePlatformUser user) throws CoBusinessException;

    /**
     * 处理举报
     *
     * @param param 处理参数
     * @param user  当前用户
     * @return 是否成功
     * @throws CoBusinessException 业务异常
     */
    Boolean handleReport(ReportHandleParam param, CerePlatformUser user, HttpServletRequest request) throws CoBusinessException;

    /**
     * 获取举报统计信息
     *
     * @return 统计信息
     */
    Object getReportStats();
}
